#include <stdio.h>
#include <string.h>
#include "personnel.h"
#include "suivre.h"
#include <stdlib.h>

void saisir_personnel(Personnel *p)
{
    printf("donner le nom du  personnel:\n");
    fflush(stdin);
    scanf("%s: ",p->nom);
    printf("donner le  prenom du personnel:\n");
    fflush(stdin);
    scanf("%s: ",p->prenom);
    printf("donner le numero de passeport:\n");
    scanf("%ld: ",&p->passeport);
    do
    {
        printf("donner l'age:\n");
        scanf("%d: ",&p->age);
    }
    while(p->age <0);
    do
    {
        printf("donner ID du personnel :\n");
        scanf("%d: ",&p->id);
    }
    while  ((p->id)<10000 || (p->id)>19999);
    printf("donner la profession:\n ");
    fflush(stdin);
    scanf("%s: ",p->profession);
    printf("donner le login du personnel :\n ");
    fflush(stdin);
    scanf("%s: ",p->login);
    do
    {
        printf("donner le mot de passe du personnel :\n ");
        scanf("%d: ",&p->passe);
    }
    while(p->passe <0);
    do
    {
        printf("Le jour:\n");
        scanf("%d: ",&p->date_embauche.jour);
    }
    while(p->date_embauche.jour >30||p->date_embauche.jour<0);
    do
    {
        printf("Le mois:\n");
        scanf("%d: ",&p->date_embauche.mois);
    }
    while(p->date_embauche.mois>12 ||p->date_embauche.mois<0);
    do
    {
        printf("L'annee:\n");
        scanf("%d: ",&p->date_embauche.annee);
    }
    while (p->date_embauche.annee <2014);
}
void enregistrer_personnel(char fichier_personnel[50],Personnel *p)
{
    saisir_personnel(p);
    FILE *f;
    f=fopen(fichier_personnel,"ab");
    if(f==NULL)
    {
        printf("\n Impossible d'ouvrir le fichier");
    }

    else
    {
        fwrite(p,sizeof(Personnel),1,f);
    }


    fclose(f);
}

void liste_personnel(char fichier_personnel[50])
{
    FILE *f;
    int i=1;
    Personnel p;
    f=fopen(fichier_personnel,"rb");
    if(f!=NULL)
    {
        while (fread(&p,sizeof(Personnel),1,f)!=0)
        {
            printf("\n \tPersonnel %d \n: ",i );

            printf("nom :%s\n",p.nom);
            printf("prenom: %s\n",p.prenom);
            printf("num passport :%ld\n",p.passeport);
            printf("age :%d\n",p.age);
            printf("profession :%s\n",p.profession);
            printf("ID :%d\n",p.id);

            printf("date :\t%d/%d/%d\n",p.date_embauche.jour,p.date_embauche.mois,p.date_embauche.annee);
            i++;
        }
    }
    else
        printf("\nImpossible d'ouvrir le fichier du personnel");
    fclose(f);
}

int recherche_personnel(char fichier_personnel[50],char nom_personnel[50])
{
    FILE *f;
    Personnel p;
    int t=0;
    f=fopen(fichier_personnel,"rb");
    if(f!=NULL)
    {
        while(fread(&p,sizeof(Personnel),1,f)!=0 && t==0)
        {

            if(strcmp(p.nom,nom_personnel)==0)
                t=1;
        }
    }
    fclose(f);
    return t;
}
void supprimer_personnel(char fichier_personnel[50],int id)
{
    Personnel p;
    FILE *f,*r;
    int test=1;
    f=fopen(fichier_personnel,"rb");
    r=fopen("temp","wb");
    if(f!=NULL)
    {
        while(fread(&p,sizeof(Personnel),1,f)!=0)
        {
            if(p.id!=id)
            {
                fwrite(&p,sizeof(Personnel),1,r);
                test=1;
            }
            else test=0;
        }
    }

    else printf("le fichier n'existe pas");
    if(test==0) printf("\nle personnel est supprimé avec succes\n");
    else printf("\nle personnel n'existe pas dans le fichier\n");
    fclose(f);
    fclose(r);
    remove(fichier_personnel);
    rename("temp",fichier_personnel);
}

 void recherche_id(char fichier_personnel[50],int id,char *nom){
FILE *f;
Personnel p;
int t=0;
f=fopen(fichier_personnel,"rb");
if(f!=NULL)
{
 while(fread(&p,sizeof(Personnel),1,f)!=0 && t==0)
{
       
        if(p.id==id){
        t=1;
	strcpy(nom,p.nom);	}
     
}
}

fclose(f);
}




void modifier_personnel(char fichier_personnel[50])
{
    Personnel *p ,*p1;
    p=malloc(sizeof(Personnel));
    p1=malloc(sizeof(Personnel));
    FILE *f,*r;
    int test=0;
    //*************************
    do
    {
        printf("donner ID du personnel à modifier :\n");
        scanf("%d: ",&p->id);
    }
    while  ((p->id)<10000 || (p->id)>19999);
    printf("donner le nouveau nom du  personnel:\n");
    fflush(stdin);
    scanf("%s: ",p->nom);
    printf("donner le  nouveau prenom du personnel:\n");
    fflush(stdin);
    scanf("%s: ",p->prenom);
    printf("donner le nouveau numero de passeport:\n");
    scanf("%ld: ",&p->passeport);
    do
    {
        printf("donner le nouveau age:\n");
        scanf("%d: ",&p->age);
    }
    while(p->age <0);

    printf("donner la nouvelle profession:\n ");
    fflush(stdin);
    scanf("%s: ",p->profession);
    printf("donner le nouveau login du personnel :\n ");
    fflush(stdin);
    scanf("%s: ",p->login);
    do
    {
        printf("donner le nouveau mot de passe du personnel :\n ");
        scanf("%d: ",&p->passe);
    }
    while(p->passe <0);
    do
    {
        printf("Le jour:\n");
        scanf("%d: ",&p->date_embauche.jour);
    }
    while(p->date_embauche.jour >30||p->date_embauche.jour<0);
    do
    {
        printf("Le mois:\n");
        scanf("%d: ",&p->date_embauche.mois);
    }
    while(p->date_embauche.mois>12 ||p->date_embauche.mois<0);
    do
    {
        printf("L'annee:\n");
        scanf("%d: ",&p->date_embauche.annee);
    }
    while (p->date_embauche.annee <2014);

    //**************************
    f=fopen(fichier_personnel,"rb");
    r=fopen("fichier_personnelnv","ab");
    if (f!=NULL)
    {
        while(fread(p1,sizeof(Personnel),1,f)!=0)
        {
            if(p1->id!=p->id)
            {
                fwrite(p1,sizeof(Personnel),1,r);
            }
            else fwrite(p,sizeof(Personnel),1,r);
            test=1;
        }
    }
    else printf("le fichier n'existe pas");

    if(test==0) printf("cet id ne correspond a aucun personnel");
    else        printf("la modification est faite avec succes");
    free(p);
    free(p1);
    fclose(f);
    fclose(r);
    remove(	fichier_personnel);
    rename(	"fichier_personnelnv",fichier_personnel);
}











